/*
 * Serializable.h
 *
 *  Created on: 21/06/2014
 *      Author: Vitor
 */

#ifndef SERIALIZABLE_H_
#define SERIALIZABLE_H_

#include <vector>
#include "ByteQueue.h"

template<typename T>
class Serializable {
public:
	ByteQueue serialize() {
		return static_cast<T*>(this)->serialize_impl();
	}
	static T deserialize(ByteQueue& bytes) {
		return T::deserialize_impl(bytes);
	}

	Serializable() {
	}
	virtual ~Serializable() {
	}
};

#endif /* SERIALIZABLE_H_ */
